/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package geometria;

/**
 *
 * @author Beni - 1-DAM
 * @version 0.9
 * @see Math <a href http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Math.html>Documentacion Math de Java</a>
 * 
 */



public class TrianguloIsosceles {
    private double lado_igual;
    private double lado_desigual;
    private double angulo_igual;
    private double altura;
    private double perimetro;
    private double area;

    

    /**
     *
     */
    public TrianguloIsosceles()
    {
    }

    // constructor con parametros numero de lados y long del lado
    /* 
     * este constructor requiere de dos argumentos el primero long del lado igual y el segundo long del lado desigual
     * @param lado_igual sería la longitud de uno de los dos lados iguales
     * @param lado_desigual sería la longitud del lado desigual
     * */
    /**
     *
     * @param lado_igual
     * @param lado_desigual
     */
    public TrianguloIsosceles (double lado_igual, double lado_desigual)
    {
        setLado_igual (lado_igual);
        setLado_desigual (lado_desigual);
        CalculaAngulo_igual ();
        CalculaPerimetro();
        CalculaAltura();
        CalculaArea();
    }
    
    
    
    
    
    /**
     * @return lado_igual devuelve longitud del lado igual
     */
    public double getLado_igual() {
        return lado_igual;
    }

    /**
     * @param lado_igual establece longitud del lado igual
     */
    public void setLado_igual(double lado_igual) {
        this.lado_igual = lado_igual;
    }

    /**
     * @return lado_desigual devuelve longitud del lado desigual
     */
    public double getLado_desigual() {
        return lado_desigual;
    }

    /**
     * @param lado_desigual establece la longitud del lado desigual
     */
    public void setLado_desigual(double lado_desigual) {
        this.lado_desigual = lado_desigual;
    }

    /**
     * @return devuelve el angulo_igual
     */
    public double getAngulo_igual() {
        return angulo_igual;
    }

    /**
     * @param angulo_igual se le pasa el valor del angulo_igual
     */
    public void setAngulo_igual(double angulo_igual) {
        this.angulo_igual = angulo_igual;
    }

     /**
     * CalculaAngulo_igual calcula el ángulo comprendido entre los lados iguales por medio de la función arcoseno
     */
        public void CalculaAngulo_igual ()
    {
        setAngulo_igual(Math.acos(getLado_desigual()/2/getLado_igual()));
    
    }
    
    /**
     * @return devuelve el valor de altura que se calcula con el método CalcularAltura
     */
    public double getAltura() {
        return altura;
    }

    /**
     * @param altura establece el valor de la altura que se calcula con el método CalcularAltura
     */
    public void setAltura(double altura) {
        this.altura = altura;
    }
     /**
     * CalculaAtura calcula la altura del triángulo por medio de la función seno y la long del lado igual
     * 
     */
        public void CalculaAltura ()
    {
        setAltura(Math.sin(getAngulo_igual())*getLado_igual());
    
    }
    
    /**
     * @return devuelve perimetro
     */
     public double getPerimetro() {
        return perimetro;
    }

     /**
     * @param perimetro the perimetro to set
     */
    public void setPerimetro(double perimetro) {
        this.perimetro = perimetro;
    }
    
     /**
     *  CalcularPerímetro Calcula el perímetro del triángulo con la fórmula suma de sus lados.
     */  
    public void CalculaPerimetro ()
    {
     //   setPerimetro(getLado_igual()*2+getLado_desigual());
        int n=2;
        double contador=getLado_desigual();
        for (int i=1;i<=n;i++){
            contador=contador+getLado_igual();
        }
        setPerimetro(contador);
    }
    /**
     * @return devuelve el area
     */
    public double getArea() {
        return area;
    }

    /**
     * @param area the area to set
     */
    public void setArea(double area) {
        this.area = area;
    }
     /**
     * CalcularArea Calcula el area del triángulo con la fórmula base*altura/2
     *
     * 
     * nótese que para que funcione el cálculo del area del triángulo necesitaremos
     * conocer la altura invocando previamente al método CalcularAltura {@link #CalculaAltura()}     */
        public void CalculaArea() {
        setArea(getLado_desigual()*getAltura()/2);
        }
        
     /**
     *  MostrarDatos Muestra los valores de entrada y de salida, además de calcular el ángulo desigual sabiendo que los 3 ángulos de un triángulo suman 180 º, convirtiéndolos de radianes a ángulos
     */
            public void MostrarDatos()
    {
        System.out.println("Nº lados = 3");
        System.out.println("Long. lados iguales = "+ getLado_igual());
        System.out.println("Long. lado desigual = "+ getLado_desigual());
        System.out.println("Angulos Iguales ="+ Math.toDegrees(getAngulo_igual()));
        System.out.println("Angulo Desigual ="+ (180-Math.toDegrees(getAngulo_igual())*2));
        System.out.println("Perímetro = "+ getPerimetro());
        System.out.println("Altura = "+ getAltura());
        System.out.println("Area = "+ getArea()+"\n");
    }
    
}
